package L619;

import java.util.Arrays;

/**
 * @program: javase
 * @description: 下一个排序
 * @author: luolidong
 * @create: 2021-06-19 15:19
 * @version: 1.0
 */
// 1 2 3 4 4 1
// 1 2 4 1 3 4
public class Demo {
    public void nextPermutation(int[] nums) {
//        从右找比后一个的小的元素
        int end=-1;
        for (int i = nums.length-1; i >=1 ; i--) {
            if(nums[i-1]<nums[i]){
                end=i-1;
                break;//找到一个，一定要跳出
            }
        }
        if(end>=0){
            int j=nums.length-1;
            //从右找比end大的元素
            while (end<=j&&nums[end]>=nums[j]){
                j--;
            }
//            交换
            int temp=nums[end];
            nums[end]=nums[j];
            nums[j]=temp;
        }
//            排序
            Arrays.sort(nums, end+1, nums.length);
    }

    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 4, 1, 1};
        int[] arr1 = {5, 4, 4, 1, 1};
        new Demo().nextPermutation(arr1);
        System.out.println(Arrays.toString(arr1));
    }
}
